﻿using System.Collections.Generic;
using Ficharts.Net.Series;

namespace Ficharts.Net
{
    /// <summary>
    /// 趋势图
    /// </summary>
    [Column(ColumnName = "line")]
    public class Line : SeriesBase
    {
        /// <summary>
        /// 默认趋势图以折线方式绘制，此属性设置为 true 后折线会变成光滑曲线。
        /// </summary>
        [ColumnElement]
        public bool Smooth { get; set; }

        /// <summary>
        /// 默认趋势图以折线方式绘制，此属性设置为 true 后折线会变成阶梯线，优先级高于 smooth 。
        /// </summary>
        [ColumnElement]
        public bool Step { get; set; }
    }

    /// <summary>
    /// 柱状图
    /// </summary>
    [Column(ColumnName = "column")]
    public class Column : SeriesBase
    {
        /// <summary>
        /// 默认100像素, 单个柱体的最大宽度/单个条形图的最大高度
        /// </summary>
        public string MaxItemSize { get; set; }
    }

    /// <summary>
    /// 条形图
    /// </summary>
    [Column(ColumnName = "bar")]
    public class Bar : SeriesBase
    {
        /// <summary>
        /// 默认100像素, 单个柱体的最大宽度/单个条形图的最大高度
        /// </summary>
        public string MaxItemSize { get; set; }
    }

    /// <summary>
    /// 区域图
    /// </summary>
    [Column(ColumnName = "area")]
    public class Area : SeriesBase { }

    /// <summary>
    /// 散点图
    /// </summary>
    [Column(ColumnName = "marker")]
    public class Marker : SeriesBase { }

    /// <summary>
    /// 气泡图
    /// </summary>
    [Column(ColumnName = "bubble")]
    public class Bubble : SeriesBase
    {
        /// <summary>
        /// 此字段值会影响到气泡的大小
        /// </summary>
        [ColumnElement]
        public string BubbleField { get; set; }

        /// <summary>
        /// 气泡半径的最大值, 默认为50
        /// </summary>
        [ColumnElement]
        public string MaxRadius { get; set; }

        /// <summary>
        /// 气泡半径的最小值, 默认为5
        /// </summary>
        [ColumnElement]
        public string MinRadius { get; set; }

        [ColumnElement]
        public string RadiusField { get; set; }
    }

    /// <summary>
    /// 堆积柱状图
    /// </summary>
    [Column(ColumnName = "stackedColumn")]
    public class StackedColumn : StackBase
    {
        [ColumnElement]
        public string SeriesName { get; set; }
    }

    /// <summary>
    /// 百分百堆积柱状图
    /// </summary>
    [Column(ColumnName = "stackedPercentColumn")]
    public class StackedPercentColumn : StackBase { }

    /// <summary>
    /// 堆积条形图
    /// </summary>
    [Column(ColumnName = "stackedBar")]
    public class StackedBar : StackBase { }

    /// <summary>
    /// 百分百堆积条形图
    /// </summary>
    [Column(ColumnName = "stackedPercentBar")]
    public class StackedPercentBar : StackBase { }

    /// <summary>
    /// 堆积图中的一个子序列
    /// </summary>
    [Column(ColumnName = "stack")]
    public class Stack : SeriesBase { }
}
